package com.eshop.eshopcache.service;

import com.eshop.eshopcache.model.ProductInfo;
import com.eshop.eshopcache.model.ShopInfo;

/**
 * @author: Xukai
 * @description: 缓存service
 * @createDate: 2018/7/25 14:35
 * @modified By:
 */
public interface CacheService {

    /**
     * 将商品信息保存到本地的ehcache缓存中
     *
     * @param productInfo
     */
    ProductInfo saveProductInfo2LocalCache(ProductInfo productInfo);

    /**
     * 从本地ehcache缓存中获取商品信息
     *
     * @param productId
     * @return
     */
    ProductInfo getProductInfoFromLocalCache(Long productId);

    /**
     * 将店铺信息保存到本地的ehcache缓存中
     *
     * @param shopInfo
     */
    ShopInfo saveShopInfo2LocalCache(ShopInfo shopInfo);

    /**
     * 从本地ehcache缓存中获取店铺信息
     *
     * @param shopId
     * @return
     */
    ShopInfo getShopInfoFromLocalCache(Long shopId);

    /**
     * 将商品信息保存到redis中
     *
     * @param productInfo
     */
    void saveProductInfo2RedisCache(ProductInfo productInfo);

    /**
     * 将店铺信息保存到redis中
     *
     * @param shopInfo
     */
    void saveShopInfo2RedisCache(ShopInfo shopInfo);

    /**
     * 从redis中获取商品信息
     *
     * @param productId
     */
    ProductInfo getProductInfoFromRedisCache(Long productId);

    /**
     * 从redis中获取店铺信息
     *
     * @param shopId
     */
    ShopInfo getShopInfoFromRedisCache(Long shopId);

    /**
     * 从远程服务获得商品信息
     * @param productId
     * @return
     */
    ProductInfo getProductInfoFromRemoteService(Long productId);

    /**
     * 从远程服务获得店铺信息
     * @param shopId
     * @return
     */
    ShopInfo getShopInfoFromRemoteService(Long shopId);
}
